﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Entity;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ThaiHoa.Win.QLSX.DAL;
using ThaiHoa.Win.QLSX.Entity;
using ThaiHoa.Win.QLSX.SanXuat.UTI;

namespace ThaiHoa.Win.QLSX.SanXuat.UI
{
    public partial class frmCongDoanChiTietDetail : Form
    {
        #region Fields
        KhoDBContext db;
        public CongDoan congDoan;
        List<MayMoc> listMayMoc;
        public event EventHandler<AddingNewEventArgs> CongDoanAddingNew;
        #endregion
        #region Cunstructor
        public frmCongDoanChiTietDetail()
        {
            InitializeComponent();
        }
        #endregion
        #region Functions
        private void KhoiTao()
        {
            db = new KhoDBContext();
            //Load dữ liệu cho combo máy
            listMayMoc = db.MayMoc.Include(m => m.DonViTinh).Include(m => m.LoaiMay).Where(m => m.TrangThai).ToList();
            cbMay.DataSource = listMayMoc;
            if (congDoan == null || congDoan.ThanhPham==null)// đóng form
                this.Close();
            //đặt tiêu đề cho form
            this.Text =string.Format("{0}",congDoan.ThanhPham.TenMatHang);
            //set mặc định cho textbox
            txtTenCongDoan.Text = "";
            //Kiểm tra xem trong danh sách công đoạn đã có phần tử nào chưa
            if (congDoan.ChiTiet.Count == 0)
            {
                nudThuTu.Value = 1; // Nếu chưa có thì khởi tạo thứ tự =1
            }
            else// nếu có rồi thì nối tiếp theo thứ tự cũ
            {
                int max = congDoan.ChiTiet.OrderBy(c => c.ThuTu).LastOrDefault().ThuTu;
                nudThuTu.Value = max + 1;
            }
            txtTenNguyenCong.Text = string.Format("NC{0}", nudThuTu.Value.ToString());
            txtTenNguyenCong.Enabled = false;
            nudThuTu.Enabled = false;
            txtDinhMuc.Text = "0";
            txtTenCongDoan.Focus();

        }
        private bool KiemTraHopLeDuLieu()
        {
            bool result = true;
            errP.Clear();
            //Kiểm tra tên công đoạn
            //kiểm tra ko được rỗng
            if (txtTenCongDoan.Text == "")
            {
                errP.SetError(txtTenCongDoan, "Tên công đoạn không được rỗng");
                result = false;
            }
            //Kiểm tra trùng tên công đoạn
            if (congDoan.ChiTiet.Any(c => c.TenCongDoan.Equals(txtTenCongDoan.Text)))
            {
                errP.SetError(txtTenCongDoan, "Tên công đoạn này đã có");
                result = false;
            }
            //Kiểm tra máy
            if (cbMay.SelectedItem == null)
            {
                errP.SetError(cbMay, "Máy móc không được rỗng");
                result = false;
            }
            //Kiểm tra định mức
            double dinhMuc;
            if (!double.TryParse(txtDinhMuc.Text, out dinhMuc))
            {
                errP.SetError(txtDinhMuc, "Định mức không hợp lệ");
                result = false;
            }
            else
            {
                if (dinhMuc < 0)
                {
                    errP.SetError(txtDinhMuc, "Định mức không hợp lệ");
                    result = false;
                }
            }
            return result;
        }
        private void TiepTuc()
        {
            if (!KiemTraHopLeDuLieu())
                return;
            if (CongDoanAddingNew != null)
            {
                CongDoanChiTiet item = new CongDoanChiTiet();
                item.TenCongDoan = txtTenCongDoan.Text;
                item.NguyenCong = txtTenNguyenCong.Text;
                item.DinhMuc = Convert.ToDouble(txtDinhMuc.Text);
                item.ThuTu = Convert.ToInt32(nudThuTu.Value);
                item.CongDoan = congDoan;
                item.May = cbMay.SelectedItem as MayMoc;
                CongDoanAddingNew(this, new AddingNewEventArgs(item));
                txtTenCongDoan.Text = "";
                nudThuTu.Value += 1;
                txtTenNguyenCong.Text = string.Format("NC{0}", nudThuTu.Value.ToString());
                txtTenNguyenCong.Enabled = false;
                nudThuTu.Enabled = false;
                txtDinhMuc.Text = "0";
                txtTenCongDoan.Focus();
            }
        }
        private void HoanTat()
        {
            //if (!KiemTraHopLeDuLieu())
            //    return;
            //if (CongDoanAddingNew != null)
            //{
            //    CongDoanChiTiet item = new CongDoanChiTiet();
            //    item.TenCongDoan = txtTenCongDoan.Text;
            //    item.NguyenCong = txtTenNguyenCong.Text;
            //    item.DinhMuc = Convert.ToDouble(txtDinhMuc.Text);
            //    item.ThuTu = Convert.ToInt32(nudThuTu.Value);
            //    item.CongDoan = congDoan;
            //    item.May = cbMay.SelectedItem as MayMoc;
            //    CongDoanAddingNew(this, new AddingNewEventArgs(item));
            //    this.Close();
            //}
            this.Close();
        }
        #endregion
        #region Events
        private void frmCongDoanChiTietDetail_Load(object sender, EventArgs e)
        {
            KhoiTao();
        }
        private void btnTiepTuc_Click(object sender, EventArgs e)
        {
            TiepTuc();
        }

        private void btnHoanTat_Click(object sender, EventArgs e)
        {
            HoanTat();
        }
        #endregion
    }

}
